package com.wlz.provider.service;

import com.wlz.api.DemoService;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.config.annotation.Service;
import org.apache.dubbo.rpc.RpcContext;

import java.util.concurrent.TimeUnit;

/**
 *  服务超时
 * @author wlz
 * @date 2022-07-12  10:10 下午
 */
@Slf4j
@Service(version = "timeout", timeout = 6000)
public class TimeoutDemoService implements DemoService {
    @Override
    public String sayHello(String name) {
      log.info("DefaultDemoService  sayHello 执行了超时服务  {}", name);

        // 服务执行5秒
        // 服务超时时间为3秒，但是执行了5秒，服务端会把任务执行完
        // 服务的超时时间，是指如果服务执行时间超过了指定的超时时间则会抛一个warn
        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        log.info("DefaultDemoService sayHello 执行结束 {}", name);
        URL url = RpcContext.getContext().getUrl();
      return String.format("%s：%s, Hello, %s", url.getProtocol(), url.getPort(), name);
    }
}
